afad35dd4e8b6e3388e6345c4a853971e87650a2,platform/lang-impl/src/com/intellij/execution/console/RunIdeConsoleAction.java,RunIdeConsoleAction,getConsoleView,#Project#VirtualFile#ScriptEngine#,189

Before Change


    ConsoleView existing = ref == null ? null : ref.get();
    if (existing != null && !Disposer.isDisposed(existing)) return existing;
    ConsoleView consoleView = TextConsoleBuilderFactory.getInstance().createBuilder(project).getConsole();
    if (psiFile != null) psiFile.putCopyableUserData(CONSOLE_VIEW_KEY, new WeakReference<ConsoleView>(consoleView));
    DefaultActionGroup toolbarActions = new DefaultActionGroup();
    JComponent consoleComponent = new JPanel(new BorderLayout());
    consoleComponent.add(consoleView.getComponent(), BorderLayout.CENTER);

After Change



    WeakReference<RunContentDescriptor> ref = psiFile.getCopyableUserData(DESCRIPTOR_KEY);
    RunContentDescriptor existing = ref == null ? null : ref.get();
    if (existing != null && existing.getExecutionConsole() != null) return existing;
    ConsoleView consoleView = TextConsoleBuilderFactory.getInstance().createBuilder(project).getConsole();

    DefaultActionGroup toolbarActions = new DefaultActionGroup();
    JComponent consoleComponent = new JPanel(new BorderLayout());
    consoleComponent.add(consoleView.getComponent(), BorderLayout.CENTER);
    consoleComponent.add(ActionManager.getInstance().createActionToolbar(ActionPlaces.UNKNOWN, toolbarActions, false).getComponent(),
                         BorderLayout.WEST);
    final RunContentDescriptor descriptor = new RunContentDescriptor(consoleView, null, consoleComponent, file.getName()) {
      @Override
      public boolean isContentReuseProhibited() {
        return true;
      }
    };

    Executor executor = DefaultRunExecutor.getRunExecutorInstance();
    //toolbarActions.add(new DumbAwareAction("Rerun", null, AllIcons.Actions.Rerun) {
    //  @Override
    //  public void update(@NotNull AnActionEvent e) {
    //    ProgressIndicator indicator = indicatorRef.get();
    //    e.getPresentation().setEnabled(file.isValid() && (indicator == null || !indicator.isRunning()));
    //  }
    //
    //  @Override
    //  public void actionPerformed(@NotNull AnActionEvent e) {
    //    consoleView.clear();
    //    rerunRunnable.run();
    //  }
    //});
    toolbarActions.add(new CloseAction(executor, descriptor, project));
    for (AnAction action : consoleView.createConsoleActions()) {
      toolbarActions.add(action);
    }
    psiFile.putCopyableUserData(DESCRIPTOR_KEY, new WeakReference<RunContentDescriptor>(descriptor));
    ExecutionManager.getInstance(project).getContentManager().showRunContent(executor, descriptor);
    return descriptor;
  }